🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / database / src / commonMain / kotlin / org / meshtastic / core / database / entity / Packet.kt
Displaying Raw • Download
core/database/src/commonMain/kotlin/org/meshtastic/core/database/entity/Packet.kt 2d20cd8a4708e2ef66e98d5259f3a97ec93f240a (2d20cd8a) Text, 8.68 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.database.entity
Tff7b72import T7ee787androidx.room3.ColumnInfo
Tff7b72import T7ee787androidx.room3.Embedded
Tff7b72import T7ee787androidx.room3.Entity
Tff7b72import T7ee787androidx.room3.Index
Tff7b72import T7ee787androidx.room3.PrimaryKey
Tff7b72import T7ee787androidx.room3.Relation
Tff7b72import T7ee787okio.ByteString
Tff7b72import T7ee787org.meshtastic.core.common.util.nowMillis
Tff7b72import T7ee787org.meshtastic.core.model.DataPacket
Tff7b72import T7ee787org.meshtastic.core.model.Message
Tff7b72import T7ee787org.meshtastic.core.model.MessageStatus
Tff7b72import T7ee787org.meshtastic.core.model.Node
Tff7b72import T7ee787org.meshtastic.core.model.NodeAddress
Tff7b72import T7ee787org.meshtastic.core.model.Reaction
Tff7b72import T7ee787org.meshtastic.core.model.util.getShortDateTime
Tff7b72data Tff7b72class T56d364PacketEntityTb4b4b4(
Tf0883e@Embedded Tff7b72val Te6edf3packetTb4b4b4: Te6edf3PacketTb4b4b4,
Tf0883e@RelationTb4b4b4(Te6edf3entity Tff7b72= Te6edf3ReactionEntityTff7b72::Te6edf3classTb4b4b4, Te6edf3parentColumns Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffpacket_idTa5d6ff"Tff7b72]Tb4b4b4, Te6edf3entityColumns Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffreply_idTa5d6ff"Tff7b72]Tb4b4b4)
Tff7b72val Te6edf3reactionsTb4b4b4: Te6edf3ListTff7b72<Te6edf3ReactionEntityTff7b72>Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72suspend Tff7b72fun Td2a8fftoMessageTb4b4b4(Te6edf3getNodeTb4b4b4: Te6edf3suspend Tb4b4b4(Te6edf3userIdTb4b4b4: Tffa657String?Tb4b4b4) Tff7b72-Tff7b72> Te6edf3NodeTb4b4b4) Tff7b72= Te6edf3withTb4b4b4(Te6edf3packetTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3node Tff7b72= Te6edf3getNodeTb4b4b4(Te6edf3dataTb4b4b4.Te6edf3fromTb4b4b4)
Tff7b72val Te6edf3isFromLocal Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_LOCAL Tff7b72|Tff7b72| Tb4b4b4(Te6edf3myNodeNum Tff7b72!Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3nodeTb4b4b4.Te6edf3num Tff7b72=Tff7b72= Te6edf3myNodeNumTb4b4b4)
Te6edf3MessageTb4b4b4(
Te6edf3uuid Tff7b72= Te6edf3uuidTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3received_timeTb4b4b4,
Te6edf3node Tff7b72= Te6edf3nodeTb4b4b4,
Te6edf3fromLocal Tff7b72= Te6edf3isFromLocalTb4b4b4,
Te6edf3text Tff7b72= Te6edf3dataTb4b4b4.Te6edf3textTb4b4b4.Te6edf3orEmptyTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3meshTime Tff7b72= Te6edf3dataTb4b4b4.Te6edf3timeTb4b4b4,
Te6edf3time Tff7b72= Te6edf3getShortDateTimeTb4b4b4(Te6edf3dataTb4b4b4.Te6edf3timeTb4b4b4.Te6edf3takeIf Tb4b4b4{ Tffa657it Tff7b72> T79c0ff0 Tb4b4b4} Tff7b72?: Te6edf3received_timeTb4b4b4)Tb4b4b4,
Te6edf3snr Tff7b72= Te6edf3snrTb4b4b4,
Te6edf3rssi Tff7b72= Te6edf3rssiTb4b4b4,
Te6edf3hopsAway Tff7b72= Te6edf3hopsAwayTb4b4b4,
Te6edf3read Tff7b72= Te6edf3readTb4b4b4,
Te6edf3status Tff7b72= Te6edf3dataTb4b4b4.Te6edf3statusTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3routingErrorTb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3emojis Tff7b72=
Te6edf3reactions
Tb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3myNodeNum Tff7b72=Tff7b72= Te6edf3myNodeNum Tff7b72|Tff7b72| Tffa657itTb4b4b4.Te6edf3myNodeNum Tff7b72=Tff7b72= T79c0ff0 Tb4b4b4}
T8b949e// myNodeNum is part of the reactions primary key, so the legacy 0 bucket can hold the same
T8b949e// (user, emoji) as this node's. The UI keys reaction rows on that pair, so keep one — the
T8b949e// current node's, which carries the live delivery status.
Tb4b4b4.Te6edf3sortedBy Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3myNodeNum Tff7b72=Tff7b72= T79c0ff0 Tb4b4b4}
Tb4b4b4.Te6edf3distinctBy Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3userId Te6edf3to Tffa657itTb4b4b4.Te6edf3emoji Tb4b4b4}
Tb4b4b4.Te6edf3toReactionTb4b4b4(Te6edf3getNodeTb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Te6edf3dataTb4b4b4.Te6edf3replyIdTb4b4b4,
Te6edf3viaMqtt Tff7b72= Te6edf3dataTb4b4b4.Te6edf3viaMqttTb4b4b4,
Te6edf3relayNode Tff7b72= Te6edf3dataTb4b4b4.Te6edf3relayNodeTb4b4b4,
Te6edf3relays Tff7b72= Te6edf3dataTb4b4b4.Te6edf3relaysTb4b4b4,
Te6edf3filtered Tff7b72= Te6edf3filteredTb4b4b4,
Te6edf3transportMechanism Tff7b72= Te6edf3dataTb4b4b4.Te6edf3transportMechanismTb4b4b4,
Te6edf3xeddsaSigned Tff7b72= Te6edf3dataTb4b4b4.Te6edf3xeddsaSignedTb4b4b4,
Te6edf3translatedText Tff7b72= Te6edf3translatedTextTb4b4b4,
Te6edf3showTranslated Tff7b72= Te6edf3showTranslatedTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffConstructorParameterNamingTa5d6ff"Tb4b4b4)
Tf0883e@EntityTb4b4b4(
Te6edf3tableName Tff7b72= Ta5d6ff"Ta5d6ffpacketTa5d6ff"Tb4b4b4,
Te6edf3indices Tff7b72=
Tff7b72[
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffmyNodeNumTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffport_numTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffcontact_keyTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffcontact_keyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffport_numTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreceived_timeTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffpacket_idTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffreceived_timeTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6fffilteredTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffreadTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4,
Tff7b72]Tb4b4b4,
Tb4b4b4)
Tff7b72data Tff7b72class T56d364PacketTb4b4b4(
Tf0883e@PrimaryKeyTb4b4b4(Te6edf3autoGenerate Tff7b72= Tff7b72trueTb4b4b4) Tff7b72val Te6edf3uuidTb4b4b4: Tffa657LongTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffmyNodeNumTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffport_numTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3port_numTb4b4b4: Tffa657IntTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffcontact_keyTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3contact_keyTb4b4b4: Tffa657StringTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffreceived_timeTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3received_timeTb4b4b4: Tffa657LongTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffreadTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3readTb4b4b4: Tffa657BooleanTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffdataTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3dataTb4b4b4: Te6edf3DataPacketTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffpacket_idTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3packetIdTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffrouting_errorTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff-1Ta5d6ff"Tb4b4b4) Tff7b72var Te6edf3routingErrorTb4b4b4: Tffa657Int Tff7b72= Tff7b72-T79c0ff1Tb4b4b4,
T8b949e/** Null when the packet carried no snr. Rows written before schema 52 store 0 for both absent and 0 dB. */
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3snrTb4b4b4: Tffa657Float? Tff7b72= Tff7b72nullTb4b4b4,
T8b949e/** Null when the radio reported no rssi. Rows written before schema 51 store 0 for both absent and 0 dBm. */
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3rssiTb4b4b4: Tffa657Int? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffhopsAwayTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff-1Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3hopsAwayTb4b4b4: Tffa657Int Tff7b72= Tff7b72-T79c0ff1Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffsfpp_hashTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3sfpp_hashTb4b4b4: Te6edf3ByteString? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6fffilteredTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3filteredTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffmessage_textTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3messageTextTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6fftranslated_textTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3translatedTextTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffshow_translatedTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3showTranslatedTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72companion Tff7b72object Tb4b4b4{
Tff7b72const Tff7b72val Te6edf3RELAY_NODE_SUFFIX_MASK Tff7b72= T79c0ff0Te6edf3xFF
Tff7b72fun Td2a8ffgetRelayNodeTb4b4b4(Te6edf3relayNodeIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3nodesTb4b4b4: Te6edf3ListTff7b72<Te6edf3NodeTff7b72>Tb4b4b4, Te6edf3ourNodeNumTb4b4b4: Tffa657Int?Tb4b4b4)Tb4b4b4: Te6edf3Node? Tb4b4b4{
Tff7b72val Te6edf3relayNodeIdSuffix Tff7b72= Te6edf3relayNodeId Te6edf3and Te6edf3RELAY_NODE_SUFFIX_MASK
Tff7b72val Te6edf3candidateRelayNodes Tff7b72=
Te6edf3nodesTb4b4b4.Te6edf3filter Tb4b4b4{
Tffa657itTb4b4b4.Te6edf3num Tff7b72!Tff7b72= Te6edf3ourNodeNum Tff7b72&Tff7b72&
Tffa657itTb4b4b4.Te6edf3lastHeard Tff7b72!Tff7b72= T79c0ff0 Tff7b72&Tff7b72&
Tb4b4b4(Tffa657itTb4b4b4.Te6edf3num Te6edf3and Te6edf3RELAY_NODE_SUFFIX_MASKTb4b4b4) Tff7b72=Tff7b72= Te6edf3relayNodeIdSuffix
Tb4b4b4}
Tff7b72val Te6edf3closestRelayNode Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3candidateRelayNodesTb4b4b4.Te6edf3size Tff7b72=Tff7b72= T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3candidateRelayNodesTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3candidateRelayNodesTb4b4b4.Te6edf3minByOrNull Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3hopsAway Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3closestRelayNode
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffConstructorParameterNamingTa5d6ff"Tb4b4b4)
Tf0883e@EntityTb4b4b4(Te6edf3tableName Tff7b72= Ta5d6ff"Ta5d6ffcontact_settingsTa5d6ff"Tb4b4b4)
Tff7b72data Tff7b72class T56d364ContactSettingsTb4b4b4(
Tf0883e@PrimaryKey Tff7b72val Te6edf3contact_keyTb4b4b4: Tffa657StringTb4b4b4,
Tff7b72val Te6edf3muteUntilTb4b4b4: Tffa657Long Tff7b72= T79c0ff0LTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6fflast_read_message_uuidTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3lastReadMessageUuidTb4b4b4: Tffa657Long? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6fflast_read_message_timestampTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3lastReadMessageTimestampTb4b4b4: Tffa657Long? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6fffiltering_disabledTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3filteringDisabledTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3isMuted
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3nowMillis Tff7b72<Tff7b72= Te6edf3muteUntil
Tb4b4b4}
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffConstructorParameterNamingTa5d6ff"Tb4b4b4)
Tf0883e@EntityTb4b4b4(
Te6edf3tableName Tff7b72= Ta5d6ff"Ta5d6ffreactionsTa5d6ff"Tb4b4b4,
Te6edf3primaryKeys Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffmyNodeNumTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreply_idTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffuser_idTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffemojiTa5d6ff"Tff7b72]Tb4b4b4,
Te6edf3indices Tff7b72= Tff7b72[Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffreply_idTa5d6ff"Tff7b72]Tb4b4b4)Tb4b4b4, Te6edf3IndexTb4b4b4(Te6edf3value Tff7b72= Tff7b72[Ta5d6ff"Ta5d6ffpacket_idTa5d6ff"Tff7b72]Tb4b4b4)Tff7b72]Tb4b4b4,
Tb4b4b4)
Tff7b72data Tff7b72class T56d364ReactionEntityTb4b4b4(
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffmyNodeNumTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3myNodeNumTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffreply_idTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3replyIdTb4b4b4: Tffa657IntTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffuser_idTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3userIdTb4b4b4: Tffa657StringTb4b4b4,
Tff7b72val Te6edf3emojiTb4b4b4: Tffa657StringTb4b4b4,
Tff7b72val Te6edf3timestampTb4b4b4: Tffa657LongTb4b4b4,
T8b949e/** Null when the packet carried no snr. Rows written before schema 52 store 0 for both absent and 0 dB. */
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3snrTb4b4b4: Tffa657Float? Tff7b72= Tff7b72nullTb4b4b4,
T8b949e/** Null when the radio reported no rssi. Rows written before schema 51 store 0 for both absent and 0 dBm. */
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3rssiTb4b4b4: Tffa657Int? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffhopsAwayTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff-1Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3hopsAwayTb4b4b4: Tffa657Int Tff7b72= Tff7b72-T79c0ff1Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffpacket_idTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3packetIdTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3statusTb4b4b4: Te6edf3MessageStatus Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3UNKNOWNTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffrouting_errorTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3routingErrorTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffrelaysTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3relaysTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffrelay_nodeTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3relayNodeTb4b4b4: Tffa657Int? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6fftoTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3toTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffchannelTa5d6ff"Tb4b4b4, Te6edf3defaultValue Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4) Tff7b72val Te6edf3channelTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@ColumnInfoTb4b4b4(Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffsfpp_hashTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3sfpp_hashTb4b4b4: Te6edf3ByteString? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4)
Tff7b72suspend Tff7b72fun Te6edf3ReactionEntityTb4b4b4.Td2a8fftoReactionTb4b4b4(Te6edf3getNodeTb4b4b4: Te6edf3suspend Tb4b4b4(Te6edf3userIdTb4b4b4: Tffa657String?Tb4b4b4) Tff7b72-Tff7b72> Te6edf3Node?Tb4b4b4)Tb4b4b4: Te6edf3Reaction Tb4b4b4{
Tff7b72val Te6edf3user Tff7b72= Te6edf3getNodeTb4b4b4(Te6edf3userIdTb4b4b4)Tff7b72?.Te6edf3user Tff7b72?: Te6edf3orgTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3protoTb4b4b4.Te6edf3UserTb4b4b4(Te6edf3id Tff7b72= Te6edf3userIdTb4b4b4)
Tff7b72return Te6edf3ReactionTb4b4b4(
Te6edf3replyId Tff7b72= Te6edf3replyIdTb4b4b4,
Te6edf3user Tff7b72= Te6edf3userTb4b4b4,
Te6edf3emoji Tff7b72= Te6edf3emojiTb4b4b4,
Te6edf3timestamp Tff7b72= Te6edf3timestampTb4b4b4,
Te6edf3snr Tff7b72= Te6edf3snrTb4b4b4,
Te6edf3rssi Tff7b72= Te6edf3rssiTb4b4b4,
Te6edf3hopsAway Tff7b72= Te6edf3hopsAwayTb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3status Tff7b72= Te6edf3statusTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3routingErrorTb4b4b4,
Te6edf3relays Tff7b72= Te6edf3relaysTb4b4b4,
Te6edf3relayNode Tff7b72= Te6edf3relayNodeTb4b4b4,
Te6edf3to Tff7b72= Te6edf3toTb4b4b4,
Te6edf3channel Tff7b72= Te6edf3channelTb4b4b4,
Te6edf3sfppHash Tff7b72= Te6edf3sfpp_hashTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72suspend Tff7b72fun Td2a8ffListTff7b72<Te6edf3ReactionEntityTff7b72>Tb4b4b4.Te6edf3toReactionTb4b4b4(Te6edf3getNodeTb4b4b4: Te6edf3suspend Tb4b4b4(Te6edf3userIdTb4b4b4: Tffa657String?Tb4b4b4) Tff7b72-Tff7b72> Te6edf3Node?Tb4b4b4) Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3toReactionTb4b4b4(Te6edf3getNodeTb4b4b4) Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.09s